python dependencies best practices